import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Esta clase representa un contador.
 * 
 * @author (Alcantar Noyola Christian Andres) 
 * @author (Sanchez Ovalle Daniel) 
 * @version (29/04/13)
 */
public class Contador
{
    private int contador;
    private Numero unidades;
    private Numero decenas;

    /**
     * Constructor de la clase Contador
     * @param unaCantidad es la cantidad con que inicia el contador.
     * @param mundo es el mundo en que se visualizara el contador.
     * @param coorX es la coordenada en X en que se colocara el contador.
     * @param coorY es la coordenada en Y en que se colocara el contador.
     * @param tamX es el ancho en pixeles que tendra la imagen del numero.
     * @param tamY es el alto en pixeles que tendra la imagen del numero.
     */
    public Contador(int unaCantidad, World mundo,int coorX, int coorY,int tamX,int tamY)
    {
        unidades=new Numero(0,tamX,tamY);
        decenas=new Numero(0,tamX,tamY);
        contador=unaCantidad;
        decenas.incrementar(unidades.incrementar(contador)); 

    }

    /**
     * Constructor de la clase Contador
     * @param unaCantidad es la cantidad con que inicia el contador.
     * @param mundo es el mundo en que se visualizara el contador.
     * @param coorX es la coordenada en X en que se colocara el contador.
     * @param coorY es la coordenada en Y en que se colocara el contador.
     */
    public Contador(int unaCantidad, World mundo,int coorX, int coorY)
    {
        unidades=new Numero(0);
        decenas=new Numero(0);
        contador=unaCantidad;
        decenas.incrementar(unidades.incrementar(contador));
        this.addToWorld(mundo,coorX,coorY);

    }

    /**
     * Este metodo remueve el contador del mundo.
     * @param mundo es el mundo en el que se encuentra el contador.
     */
    public void removeFromWorld(World mundo)
    {
        mundo.removeObject(unidades);
        mundo.removeObject(decenas);
    }

    /**
     * Este metodo agrega el contador al mundo
     * @param mundo es el mundo al que se agregara el contador.
     * @param X es la coordenada en X en que se posicionara el contador.
     * @param Y es la coordenada en Y en que se posicionara el contador.
     */
    public void addToWorld(World mundo, int X, int Y)
    {
        mundo.addObject(unidades,X+10,Y);
        mundo.addObject(decenas,X-10,Y);
    }

    /**
     * Este metodo incrementa el contador.
     * @param unaCantidad es la cantidad que se incrementara al contador.
     */
    public void incrementarValor(int unaCantidad)
    {
        decenas.incrementar(unidades.incrementar(unaCantidad));
        contador=(decenas.getNum()*10)+unidades.getNum();
    }

    /**
     * Este metodo decrementa el contador.
     * @param unaCantidad es la cantidad que se decrementara al contador.
     */
    public void decrementarValor(int unaCantidad)
    {
        decenas.decrementar(unidades.decrementar(unaCantidad));
        contador=(decenas.getNum()*10)+unidades.getNum();
    }

    /**
     * Este metodo asigna un valor fijo al contador.
     * @param valor es el valor que se asigna al contador.
     */
    public void fijaValor(int valor)
    {
        contador=valor;
        unidades.fijaNumero(valor%10);
        decenas.fijaNumero((valor-unidades.getNum())/10);
    }

    /**
     * Este metodo regresa el valor del contador.
     */
    public int getValor()
    {
        return contador;
    }

}
